<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        function A() {
            var count = 1
            function B() {
                count++
                console.log(count)
            }
            return B
        }
        var C = A()
        // 函数A中的 count 变量会一直保存在内存中
        // 当我们需要在模块中定义一些变量，并希望这些变量一直保存在内存中但又不会 “污染” 全局的变量时，就可以用闭包来定义这个模块。
        C() // 2
        C() // 3
        C() // 4

        // 应用场景
        // 通过闭包实现定时器传参效果
        function func(param) {
            return function () {
                alert(param)
            }
        }
        setTimeout(func(1),1000)
    </script>
</head>

<body>

</body>

</html>